
https://leetcode.cn/problems/SLwz0R/description/
///**
// * Definition for singly-linked list.
// * struct ListNode {
// *     int val;
// *     ListNode *next;
// *     ListNode() : val(0), next(nullptr) {}
// *     ListNode(int x) : val(x), next(nullptr) {}
// *     ListNode(int x, ListNode *next) : val(x), next(next) {}
// * };
// */
//class Solution {
//public:
//    ListNode* removeNthFromEnd(ListNode* head, int n) {
//
//        if (!head) {
//            return nullptr;
//        }
//
//        ListNode* fast = head;
//        ListNode* slow = head;
//        while (n--) {
//            fast = fast->next;
//        }
//
//        if (!fast) {
//            return head->next;
//        }
//
//        while (fast->next) {
//            slow = slow->next;
//            fast = fast->next;
//        }
//
//        ListNode* next = slow->next->next;
//        delete slow->next;
//        slow->next = next;
//        return head;
//    }
//};


https://leetcode.cn/problems/c32eOV/description/
///**
// * Definition for singly-linked list.
// * struct ListNode {
// *     int val;
// *     ListNode *next;
// *     ListNode(int x) : val(x), next(NULL) {}
// * };
// */
//class Solution {
//public:
//    ListNode* detectCycle(ListNode* head) {
//
//        if (!head || !head->next) {
//            return nullptr;
//        }
//
//        ListNode* fast = head;
//        ListNode* slow = head;
//
//        while (fast && fast->next) {
//            fast = fast->next->next;
//            slow = slow->next;
//            if (fast == slow) {
//                break;
//            }
//        }
//
//        fast = head;
//        while (fast && slow) {
//            if (fast == slow) {
//                return slow;
//            }
//            fast = fast->next;
//            slow = slow->next;
//        }
//        return nullptr;
//    }
//};

https://leetcode.cn/problems/linked-list-cycle/description/
///**
// * Definition for singly-linked list.
// * struct ListNode {
// *     int val;
// *     ListNode *next;
// *     ListNode(int x) : val(x), next(NULL) {}
// * };
// */
//class Solution {
//public:
//    bool hasCycle(ListNode* head) {
//
//        if (!head) {
//            return false;
//        }
//
//        ListNode* fast = head;
//        ListNode* last = head;
//
//        while (fast && fast->next) {
//            fast = fast->next->next;
//            last = last->next;
//            if (fast == last) {
//                return true;
//            }
//        }
//        return false;
//    }
//};